//
//  Queue.h
//  OCBase
//
//  Created by 侯伟 on 2019/4/16.
//  Copyright © 2019年 侯伟. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface Queue : NSObject

#pragma mark -------异步执行-------
/// 异步执行代码块（主队列执行）
+ (void)asyncMain:(void (^ __nullable)(void))mainTask;

/// 异步执行代码块（全局队列执行）
+ (void)asyncGlobal:(void (^ __nullable)(void))globalTask;

/// 异步执行代码块（先全局队列执行，再返回主队列执行）
+(void)asyncGlobal:(id (^ __nullable)(void))backgroundTask mainTask:(void (^ __nullable)(id obj))mainTask;

/// 异步执行代码块（自定义队列执行）
+ (void)asyncQueue:(void (^ __nullable)(void))queueTask;

/// 异步执行代码块（先自定义队列执行，再返回主队列执行）
+(void)asyncQueue:(id (^ __nullable)(void))queueTask mainTask:(void (^ __nullable)(id obj))mainTask;

#pragma mark -------顺序执行-------
/// 顺序执行代码块（在主队列中执行）
+ (void)syncMain:(void (^ __nullable)(void))mainTask;

/// 顺序执行代码块（在全局队列执行）
+ (void)syncGlobal:(void (^ __nullable)(void))globalTask;

/// 顺序执行代码块（先全局队列执行，再返回主队列执行）
+(void)syncGlobal:(id (^ __nullable)(void))globalTask mainTask:(void (^ __nullable)(id obj))mainTask;

/// 顺序执行代码块（自定义队列执行）
+ (void)syncQueue:(void (^ __nullable)(void))queueTask;

/// 顺序执行代码块（先自定义队列执行，再返回主队列执行）
+(void)syncQueue:(id (^ __nullable)(void))queueTask mainTask:(void (^ __nullable)(id obj))mainTask;

#pragma mark -------延时执行-------
///延时s执行
+ (void)delay:(CGFloat)seconds task:(dispatch_block_t)task;
    
@end

NS_ASSUME_NONNULL_END
